#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 文件：word、excel、ppt、pdf等文件格式的识别
# 文件分为二进制文件和文本文件，二进制文件无法直接阅读，需要使用工具进行分析，文本文件可以直接阅读。
# 文本文件可以分为：
# 1. 纯文本文件：如.txt、.log、.java、.c、.cpp、.py、.html、.xml、.json、.md、.sql等文件
# 2. 富文本文件：如.doc、.docx、.xls、.xlsx、.ppt、.pptx、.odt、.rtf等文件
# 3. 脚本文件：如.sh、.bat、.pl、.php、.js、.vbs等文件
# 4. 压缩文件：如.zip、.tar、.gz、.rar、.7z等文件
# 5. 数据库文件：如.db、.sql、.mdb、.accdb等文件
# 6. 程序文件：如.exe、.dll、.so等文件
# 7. 图片文件：如.jpg、.png、.gif、.bmp等文件
# 8. 视频文件：如.mp4、.avi、.flv等文件
# 9. 音频文件：如.mp3、.wav、.wma等文件
# 10. 其他文件：如.iso、.pdf、.doc、.docx、.xls、.xlsx、.ppt、.pptx等文件

# 二进制文件可以分为：
# 1. 可执行文件：如.exe、.dll、.so等文件
# 2. 压缩文件：如.zip、.tar、.gz、.rar、.7z等文件
# 3. 数据库文件：如.db、.sql、.mdb、.accdb等文件
# 4. 程序文件：如.bin、.dat、.iso等文件
# 5. 图片文件：如.jpg、.png、.gif、.bmp等文件
# 6. 视频文件：如.mp4、.avi、.flv等文件
# 7. 音频文件：如.mp3、.wav、.wma等文件
# 8. 其他文件：如.pdf、.doc、.docx、.xls、.xlsx、.ppt、.pptx等文件

# 文本文件和二进制文件都可以用Python的open()函数打开，并用read()函数读取内容。
# 对于二进制文件，需要用二进制模式打开，如：
# f = open('file.jpg', 'rb')
# content = f.read()
# f.close()
# 对于文本文件，可以用默认模式打开，如：
# f = open('file.txt', 'r')
# content = f.read()
# f.close()

# 读取文件
s = open('day09.md', 'r')
content = s.read()
s.close()
print(content)

# 写入文件
s = open('day09.md', 'w')
s.write('Hello, world!')
s.write('Hello, world!')
s.close()

# 追加内容
s = open('day09.md', 'a')
s.write('Hello, world!')
s.write('Hello, world!')
s.close()

# 编码、解码
# 默认utf-8编码，可以用encode()和decode()方法进行编码和解码
s = '中文'
s_utf8 = s.encode('utf-8')
# s_gbk = s_utf8.decode('gbk') # 解码失败，因为gbk编码不支持中文
s1 = s_utf8.decode('utf-8') # 解码失败，因为gbk编码不支持中文
print(s1)

# 其他编码格式
# 如gbk、gb2312、big5等，需要安装相应的编码库才能使用

# 读取文件方式： read()、readlines()、readline()
# 写入文件方式： write()、writelines()
# 追加内容方式： a+模式
# 编码、解码方式： encode()、decode()
# 关闭文件方式： close()
# 读取文件时，默认以utf-8编码读取，如果文件编码不正确，会报错；如果要读取其他编码的文件，需要指定编码格式，如：
# s = open('file.txt', 'r', encoding='gbk')
# content = s.read()
# s.close()
# 写入文件时，默认以utf-8编码写入，如果要写入其他编码的文件，需要指定编码格式，如：
# s = open('file.txt', 'w', encoding='gbk')
# s.write('中文')
# s.close()
# 追加内容时，默认以utf-8编码追加，如果要追加其他编码的文件，需要指定编码格式，如：
# s = open('file.txt', 'a', encoding='gbk')
# s.write('中文')
# s.close()